home *** CD-ROM | disk | FTP | other *** search
/ PC-X 1997 October / pcx14_9710.iso / swag / delphi.swg / 0004_How to copy files in Delphi.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1995-11-22  |  1.8 KB  |  70 lines

  1.  
  2. {This way uses a File stream.}
  3. Procedure FileCopy( Const sourcefilename, targetfilename: String );
  4. Var
  5.   S, T: TFileStream;
  6. Begin
  7.   S := TFileStream.Create( sourcefilename, fmOpenRead );
  8.   try
  9.     T := TFileStream.Create( targetfilename,
  10.                              fmOpenWrite or fmCreate );
  11.     try
  12.       T.CopyFrom(S, S.Size ) ;
  13.     finally
  14.       T.Free;
  15.     end;
  16.   finally
  17.     S.Free;
  18.   end;
  19. End;
  20.  
  21.  
  22. {This way uses memory blocks for read/write.}
  23. procedure FileCopy(const FromFile, ToFile: string);
  24.  var
  25.   FromF, ToF: file;
  26.   NumRead, NumWritten: Word;
  27.   Buf: array[1..2048] of Char;
  28. begin
  29.   AssignFile(FromF, FromFile);
  30.   Reset(FromF, 1);        { Record size = 1 }
  31.   AssignFile(ToF, ToFile);    { Open output file }
  32.   Rewrite(ToF, 1);        { Record size = 1 }
  33.   repeat
  34.     BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
  35.     BlockWrite(ToF, Buf, NumRead, NumWritten);
  36.   until (NumRead = 0) or (NumWritten <> NumRead);
  37.  
  38.   CloseFile(FromF);
  39.   CloseFile(ToF);
  40. end;
  41.  
  42. {This one uses LZCopy, which USES LZExpand.}
  43. procedure CopyFile(FromFileName, ToFileName: string);
  44. var
  45.   FromFile, ToFile: File;
  46. begin
  47.   AssignFile(FromFile, FromFileName); { Assign FromFile to FromFileName }
  48.   AssignFile(ToFile, ToFileName);     { Assign ToFile to ToFileName }
  49.   Reset(FromFile);                    { Open file for input }
  50.   try
  51.     Rewrite(ToFile);                  { Create file for output }
  52.     try
  53.  
  54.       { copy the file an if a negative value is returned }
  55.       { raise an exception }
  56.       if LZCopy(TFileRec(FromFile).Handle, TFileRec(ToFile).Handle) < 0
  57.         then
  58.         raise EInOutError.Create('Error using LZCopy')
  59.     finally
  60.       CloseFile(ToFile);  { Close ToFile }
  61.     end;
  62.   finally
  63.     CloseFile(FromFile);  { Close FromFile }
  64.   end;
  65. end;
  66.  
  67.  
  68.  
  69.  
  70.